/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package cn.edu.thu.laud.hive.metastore.model;

import java.util.ArrayList;
import java.util.List;

import javax.jdo.annotations.Discriminator;
import javax.jdo.annotations.DiscriminatorStrategy;
import javax.jdo.annotations.Element;
import javax.jdo.annotations.Inheritance;
import javax.jdo.annotations.InheritanceStrategy;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;

/**
 * @author zhuoan
 * MColumnDescriptor.
 * A wrapper around a list of columns.
 */
@PersistenceCapable(table = "CDS", detachable="true")
@Inheritance(strategy = InheritanceStrategy.NEW_TABLE)
@Discriminator(strategy=DiscriminatorStrategy.VALUE_MAP, value="CDS")
public class MColumnDescriptor extends MBase{
	
  @Persistent
  @Element(dependent="true")
  private List<MFieldSchema> cols;

  public MColumnDescriptor() {}
  
  public org.apache.hadoop.hive.metastore.model.MColumnDescriptor convertToHiveModel(){
	  org.apache.hadoop.hive.metastore.model.MColumnDescriptor col = new org.apache.hadoop.hive.metastore.model.MColumnDescriptor();
	  
	  List<org.apache.hadoop.hive.metastore.model.MFieldSchema> fields =null;
	  if(cols != null){
		  fields= new ArrayList<org.apache.hadoop.hive.metastore.model.MFieldSchema>(cols.size());
		  for(MFieldSchema field : cols)
			  fields.add(field.convertToHiveModel());
	  }	  
	  col.setCols(fields);
	  return col;
  }

  /**
   *
   * @param cols
   */
  public MColumnDescriptor(List<MFieldSchema> cols) {
    this.cols = cols;
  }

  public List<MFieldSchema> getCols() {
    return cols;
  }

  public void setCols(List<MFieldSchema> cols) {
    this.cols = cols;
  }

  @Override
  public String toString() {
		return "MColumnDescriptor [cols=" + cols + "]";
  }
  
  
}
